Visual images can have enormous impact on people. As a result, a variety of technologies have been developed to create and manipulate images with the assistance of a computer. Indeed, the field of computer graphics has been and still is one the most intensively pursued branches of computer science, both by theoreticians and by working engineers. Within computer graphics, numerous specialties have emerged, including scientific visualization, rendering methods, animation methods, CAD/CAM, fonts, three-dimensional graphics, and image processing.
Past innovations in computer hardware and software help manage the complex information and support the extensive computations required to render and manipulate images, and new developments continually emerge. Many successful and prominent companies, such as the Evans and Sutherland Computer Corporation, Silicon Graphics, Inc., and Pixar, Inc., specialize in continually improving computer graphics systems.
Unfortunately, different graphics systems do not communicate readily with one another. The database of files that contain information needed to create and manipulate computer graphic images contain a wide variety of different types of information, including point positions, interpolation curves, palettes, colors, light vectors and strengths, texture maps, key frames, and so forth. Information used by one graphics system will not necessarily be available in another system. Sometimes the information is present but is stored in an incompatible or proprietary format. Some progress has been made at defining standard interfaces for accessing and manipulating graphics information, but much work in this area remains to be done.
In short, computer graphics is a large and active industry which focuses on the efficient and rapid manipulation of large amounts of data to produce visual images. People who design and implement graphics systems have very limited time, opportunity, and reason to exchange specific technical ideas with people working in other computer-related industries such as networking, encryption, or business applications such as character licensing and merchandising.
The problem of managing complexity is not limited to computer graphics, but appears in many different forms throughout computer science. As a result, programming languages and other elements of a computing environment provide a wide variety mechanisms for organizing the potentially enormous amount of information required to create a useful working program.
One important type of complexity management mechanism provides some degree of "modularity" or "encapsulation" that separates code into individual components. The various components communicate with one another through some type of interface. Each component hides from the other components certain information that is only used locally by the hiding component, so that the effect of changes to local information is limited as much as possible.
Encapsulation mechanisms specific to a given programming language include Ada packages, Pascal units, Modula-2 modules, C++ objects, and many others. Functions and procedures are used to encapsulate code in a host of programming languages. Other encapsulation mechanisms are typically discussed in connection with the computer hardware or with the operating system software that manages hardware resources; these include interrupt handlers, semaphores, threads, tasks, and processes.
One form of encapsulation which has recently gained in prominence is the use of "objects" or "object-oriented programming." One approach to object-oriented programming relies on a "Component Object Model" ("COM"). COM is described generally in OLE 2 Programmer's Reference, Volume One, ISBN 1-55615-628-6 and in K. Brockschmidt, Inside OLE, second edition, ISBN 1-55615-843-2.
COM defines "component objects" which encapsulate pieces of functionality and make them available for use by "clients." Clients determine what services are available from a component object, and what information those services require and produce, by investigating the component's interface(s).
One version of COM is called "OLE." A wide variety of OLE software components, OLE controls, OLE automation objects, OLE automation controllers, OLE-enabled applications, OLE graphic objects, and related tools are commercially available. A Directory of OLE Components for Visual Development is available from Fawcette Technical Publications of Palo Alto, Calif. Those of skill in the art will recognize that other approaches to object-oriented programming include the Java programming language, and the OpenDoc, Common Object Request Broker Architecture ("CORBA"), and NextObjects approaches.
Conventional object-oriented tools and methods are not well-suited to the creation and control of animated characters. Conventional approaches also fail to address the problem of managing personality manifestations of such characters.
As used herein, "animated characters" are recognizable sequential presentations of a character that are created with the assistance of a computer. Individual still images may be created from animations by "screen dumps" or the like, but animation typically involves more than just an image. Animation includes a coordinated sequence of bitmaps or other audio/visual renderings which portray character activity in a computer-generated environment. Coordination may be achieved by key frames, kinematics, or dynamic simulation, or by traditional animation techniques borrowed from the film industry, such as deformation.
Animation may include images, sounds, or both. It may be two-dimensional, or it may present the illusion of occurring in a three-dimensional environment. Environments may be defined according to standards such as the VRML, Living Worlds, and/or Open Community standards, and others. Animation images are drawn on a computer screen or other display device based on data being retrieved from a computer system's memory.
Animated characters may be avatars which represent humans; they may be agents or other representations of fictional characters; or they may be autonomous creations such as "Bots" or "intelligent agents." For instance, an avatar representing a player in a multi-user interactive game, an animation of Santa Claus squeezing through a chimney, and an animation representing an operating system file manager may each embody an animated character.
Interaction between animated characters, between portions of a character, between characters and objects in the environment, and between characters and humans, is of particular interest here. In theory, character representations should not be limited to simple bitmaps or vectors in paint programs, browsers, or other applications, but should also be able to roam through a diverse and sometimes unpredictable computer-generated environment, using character embodiments based on Java applets, OLE components, agents, avatars, or the like. During these travels, animated characters would encounter one another, computer-generated buildings, tools (guns, telephones, magic wands, and other items with real or imaginary counterparts outside the computer-generated environment), events (absence or presence of other characters or tools, or actions by other characters), and numerous other opportunities for real-time interaction.
However, there are no satisfactory means known to guide such interactions so they conform with and reflect the personalities of the characters. A malign character may masquerade as a trusted personality object, leading objects to cooperate and interact with the masquerading object in unintended ways. A user, either directly or indirectly, may tamper with the content of messages passed between objects and may produce effects similar to masquerade. A malicious programmer may create a lewd scene using the likeness of a popular personality.
Subject to the limits imposed by respect for free speech, it would therefore be useful to place limits on character interactions. Some limits are already imposed by legal means independent of the technology. Although many animated characters lie wholly in the public domain and can thus be manipulated at will without legal liability, other characters include protected intellectual property and/or are associated with the reputation of a particular individual or business. Unauthorized manipulation of such proprietary animated characters can damage the public image or commercial prospects of the characters' owners.
In one case, for instance, a court recognized that an "underground" comic book which placed several well-known and wholesome Disney cartoon characters in a promiscuous, drug-ingesting context completely at odds with their personalities thereby violated Disney's rights. However, the relatively high cost of legal actions discourages many character owners from bringing suit to protect their rights.
One approach to controlling character interaction is to script all interactions in advance. This is the approach taken in films and plays, novels, comic strips, animated debuggers, user interfaces, and many simulations. Even if some "audience" input is allowed during the "performance," the set of possible outcomes is severely restricted and largely predetermined. This approach is not suitable for fully automated environments, where a human playwright, director, or the like is not available. The requirement of constant direct human supervision makes this approach uneconomical as well as impractical for many situations. This approach may also inhibit spontaneity and real-time response.
Another approach which relies heavily on direct human control of interactions is used in video games, interactive games and simulations, mediated war games, fantasy games, role-playing games, and the like. In these environments the animations are avatars whose behavior is controlled mainly by human players, subject to the result of events such as weapon hits and available resources such as spells. The need for constant direct human supervision makes this approach unsuitable for controlling numerous and wide-ranging autonomous animated characters.
Another approach allows characters to interact with one another by modifying one another's properties (courage, intelligence, charisma, and so forth) through a common or shared memory area such as a blackboard. However, the characters are implicitly assumed to be under the indirect control of a single human author (or a small group of authors who trust one another), so no restrictions are placed on access by one character to another character's properties. This approach does not scale well to interactive computer-generated environments which may contain characters scripted by humans that never meet or communicate directly, characters which have never previously interacted, and/or malicious characters.
A different approach allows characters to interact with one another and with their environment by sensing contacts or collisions with one another and with the environment. However, this approach merely determines whether contact has occurred; it fails to take into account the respective personalities of the characters. A contact between a first character and a second character is treated the same by the first character as a contact between that character and a wall or other obstacle.
Some autonomous agents have limited input and output connections to computer-generated environments through one or more sensors and effectors, and a limited ability to learn through interaction with that environment. However, such agents are not integrated with computer animations. They are also not well-suited for real-time interaction with the environment and with animated characters in a way that manifests a personality readily apparent to humans. Indeed, like many other computer programs, such agents are fairly described as "impersonal" and "mechanical."
Some recent approaches recognize the need for rules governing interaction between animated characters, their environment, other animated characters, and users. The need to protect against malicious characters has also been noted recently. But the precise constraints needed have not been set forth, and no detailed means are described which would enable one of skill in the art to provide suitable constraints on interaction.
Thus, it would be an advance in the art if the benefits of object-oriented programming could be combined with computer graphic techniques to provide objects which animate characters in novel ways.
It would be a further advance if manifestations of the personality of such animated characters could be managed and monitored by a suitably programmed computer in order to cost-effectively protect and promote those personalities.
It would also be an advance if character interactions were subject to authentication.
It would be a further advance if the results of contact between two characters depended at least in part on the personalities of the characters.
Such a method and system for controlling animated characters are disclosed and claimed herein.